package com.xinqi.modules.sys.feedback.service;

import com.xinqi.common.base.response.PageInfo;
import com.xinqi.common.base.response.Param;
import com.xinqi.modules.sys.feedback.dto.req.FeedbackCreateDTO;
import com.xinqi.modules.sys.feedback.dto.req.FeedbackDeleteDTO;
import com.xinqi.modules.sys.feedback.dto.req.FeedbackGrantDTO;
import com.xinqi.modules.sys.feedback.dto.req.FeedbackQueryDTO;
import com.xinqi.modules.sys.feedback.dto.req.FeedbackRewardedDTO;
import com.xinqi.modules.sys.feedback.dto.rsp.FeedbackResultDTO;


/**
 * 用户反馈表服务层
 *
 * @author: yyzhenn
 * @date: 2023/04/23
 */
public interface FeedbackService {
    /**
     * 分页查询 用户反馈表数据
     *
     * @param pageable
     * @param query
     * @return
     */
    PageInfo<FeedbackResultDTO> page(Param pageable, FeedbackQueryDTO query);

    /**
     * 根据id查询 用户反馈表数据
     *
     * @param id
     * @return
     */
    FeedbackResultDTO findById(Long id);

    /**
     * 管理后台管理员查看详情
     *
     * @param id
     * @return
     */
    FeedbackResultDTO infoByAdminAndId(Long id);

    /**
     * 用户反馈-奖品发放
     *
     * @param dto
     * @return
     */
    Boolean grantFeedback(FeedbackGrantDTO dto);

    /**
     * 新增普通反馈
     *
     * @param dto
     * @return
     */
    Long insert(FeedbackCreateDTO dto);

    /**
     * 新增有奖反馈
     *
     * @param dto
     * @return
     */
    Long rewarded(FeedbackRewardedDTO dto);

    /**
     * 校验是否是有奖反馈（首次反馈才可以）
     *
     * @param userId
     * @return
     */
    Boolean checkRewarded(Long userId);

    /**
     * 根据id删除 用户反馈表数据
     *
     * @param id
     * @return
     */
    Boolean deleteById(Long id);

    /**
     * 根据id删除 用户反馈表数据
     *
     * @param dto
     * @return
     */
    Boolean deleteById(FeedbackDeleteDTO dto);
}
